home *** CD-ROM | disk | FTP | other *** search
- »·······T·······T·······T·······T·······T·······T·······T·······T·······T·····T
-
- ;NOTE: A4 IS USED INTERNALLY IN TRASH'M-ONE AND MAY ONLY BE USED IF IT IS
- ; RESTORED..
-
- ******* MACROS FOR EXTERN ASSEMBLER *******
-
- ;D7 FLAG
-
- AF_OPTIMIZE= 0
- AF_BRATOLONG= 1
- AF_UNDEFVALUE= 2
- AF_BSS_AREA= 3
- AF_BYTE_STRING= 4
- AF_MACRO_END= 6
- AF_FINISHED= 7
- AF_LOCALFOUND= 8
- AF_LABELCOL= 9
- AF_MACROS_OFF= 10
- AF_GETLOCAL= 11
- AF_EXTERN_ASM= 12
- AF_PASSONE= 15
- AF_SEMICOMMENT= 25
- AF_OFFSET= 26
- AF_OFFSET_A4= 27
- AF_ALLERRORS= 28
- AF_LISTFILE= 29
- AF_DEBUG1= 30
- AF_IF_FALSE= 31
-
-
- GET: MACRO GET NEXT WORD TO CHECK
- MOVE.W (A3)+,D0
- AND.W D4,D0
- ENDM
- CXD: MACRO CHECK WORD AND JUMP SHORT
- CMP.W #\1,D0
- BEQ.\0 \2
- ENDM
- ECXD: MACRO CHECK END WORD AND JUMP SHORT
- CMP.W #\1+$8000,D0
- BEQ.\0 \2
- ENDM
- CXDS: MACRO CHECK BYTE AND JUMP SHORT
- CMP.W #\1<<8,D0
- BEQ.\0 \2
- ENDM
- ECXDS: MACRO CHECK END BYTE AND JUMP SHORT
- CMP.W #\1<<8+$8000,D0
- BEQ.\0 \2
- ENDM
- NOCXD: MACRO IF NO COMMAND IS FOUND.
- MOVE.L (SP)+,(SP)
- RTS
- ENDM
- ERROR MACRO OUTPUT ERROR
- LEA .\@,A0
- BRA.W REP_ERROR
- .\@ DC.B \1,0
- EVEN
- ENDM
- NEXTKOMMA MACRO GOTO NEXT "," ,
- BSR PARSE_GET_KOMMA IF NO KOMMA IS THERE
- ; IT WILL DISPLAY
- ; "ILLEGAL OPERAND"
- ENDM
- CXDRTS MACRO USED INSTEAD OF RTS
- ADDQ.W #4,SP
- RTS
- ENDM
- SENDBYTE MACRO $XX
- BSR.\0 SND1B
- ENDM
- SENDBYTESIGNED MACRO $xx XREF
- BSR.\0 SND1BS
- ENDM
- SENDBYTEUNSIGNED MACRO $xx XREF
- BSR.\0 SND1BUN
- ENDM
- SEND2BYTEUNSIGNED MACRO $00xx XREF
- BSR.\0 SND2BUN
- ENDM
- SENDWORD MACRO $xxxx
- BSR.\0 SND1W
- ENDM
- SENDWORDSIGNED MACRO $xxxx XREF
- BSR.\0 SND1WS
- ENDM
- SENDWORDUNSIGNED MACRO $xxxx XREF
- BSR.\0 SND1WUN
- ENDM
- SENDLONG MACRO $xxxxxxxx
- BSR.\0 SND1L
- ENDM
- SENDLONGRELOC MACRO $xxxxxxxx RELOC
- BSR.\0 SND1LR
- ENDM
- SENDBEGIN MACRO
- BSR.W ASKIP
- ENDM
- SENDEND MACRO
- BSR.W AINSERT
- ENDM
- NEXTSYMBOL MACRO
- BSR.W NSYMBOL
- ENDM
- NS_AVALUE=$61 ;RETURN VALUE FOR NEXTSYMBOL(D1) IF GOT A VALUE
- NS_ALABEL=$62 ;RETURN VALUE FOR NEXTSYMBOL(D1) IF GOT A LABEL
- ;USE NEXT LABEL TO GET THE VALUE(D3)
- NEXTSYMBOLBUFFER MACRO
- SUBQ.W #4,SP
- BSR.W NSYMBOLBUFFER
- MOVE.L (SP)+,\1
- ENDM
- INCDIRBUFFER MACRO
- SUBQ.W #4,SP
- BSR.W INCDIRBUF
- MOVE.L (SP)+,\1
- ENDM
- INPUTBUFFER MACRO
- SUBQ.W #4,SP
- BSR.W INPUTBUF
- MOVE.L (SP)+,\1
- ENDM
- RESERVECODE MACRO
- MOVE.L \1,D0
- JSR RESERVE
- MOVE.L D0,\2
- ENDM
- NEXTLABEL MACRO
- BSR.W NLABEL
- ENDM
- GETVALUE MACRO GET STRINGS VALUE
- BSR.W GET_VALUE
- ENDM
- GETADDR MACRO
- BSR.W GET_ADDR
- ENDM
- GETLABEL MACRO
- BSR GETLABELVAL
- ENDM
-
- ; MOVE.L INSTRUCTION_DATA_FIELD_PTR(A4),D0
- ; MOVE.L CURRENT_ABS_ADDRESS,D1 ONLY IN PASS2
- ; MOVE.W CURRENT_SECTION(A4),D2
-
- ASMHEAD MACRO
- MOVEQ #0,D0
- RTS
-
- STARTOFASSEMBLER
- ILLEGAL
- DC.L STARTOFASSEMBLER
- DC.L \3
- DC.L $80000900
- DC.L .ASMNAME
- DC.L .ASMVERSION
- DC.L .ASMNODELIST
- .ASMNAME
- DC.B '\4.assembler',0 ;Assembler name must be the same as
- ;saved and in lower case
- DC.B '$VER: '
- .ASMVERSION
- DC.B \5,0
- EVEN
-
- .ASMNODELIST
- DC.L $2A
- DC.L .ASMNODELIST1
- DC.L 0
- DC.L .0
-
- .0 EXG D0,A5
- MOVE.L A6,$22(A5)
- MOVE.L A0,$26(A5)
- MOVE.W #$1D,$16(A5)
- EXG D0,A5
- RTS
-
- .ASMNODELIST1
- DC.L .INSTALLASSEMBLER Don't change
- DC.L .REMOVEASSEMBLER Don't change
- DC.L .EXIT Don't change
- DC.L .EXIT Don't change
- DC.L INITTRASH Don't Change
- DC.L INITASSEMBLER Don't Change
- DC.L INITASSEMBLER2 Don't Change
- DC.L .RESERVED
- DC.L .RESERVED
- DC.L .RESERVED
- DC.L .RESERVED
- DC.L .RESERVED
- DC.L .RESERVED
- DC.L .RESERVED
- DC.L .RESERVED
- DC.L .RESERVED
- DC.L .RESERVED
- DC.L .RESERVED
- DC.L -1
-
- .RESERVED
- rts
-
- .EXIT MOVEQ #0,D0
- RTS
-
- .INSTALLASSEMBLER
- ADDQ.W #1,$20(A6)
- MOVE.L A6,D0
- ;START UP PROCEDURE
- RTS
-
- .REMOVEASSEMBLER
- SUBQ.W #1,$20(A6)
- BNE.S .End
- MOVEM.L D2/A5/A6,-(SP)
- MOVEA.L A6,A5
- MOVE.L $26(A5),D2
- MOVEA.L A5,A1
- MOVEA.L (A1)+,A0
- MOVEA.L (A1),A1
- MOVE.L A0,(A1)
- MOVE.L A1,4(A0)
- MOVEA.L $22(A5),A6
- MOVEA.L A5,A1
- MOVEQ #0,D0
- MOVE.W $10(A5),D0
- SUBA.L D0,A1
- ADD.W $12(A5),D0
- JSR -$D2(A6)
- MOVE.L D2,D0
- MOVEM.L (SP)+,D2/A5/A6
- .End RTS
-
- ******* LIBRARY HEADER FOR EXTERN ASSEMBLER *******
-
- INITTRASH MOVE.L #\1,D0
- MOVE.L #\2,D1
- RTS
- INITASSEMBLER MOVE.L D0,REP_ERROR+2
- MOVE.L D1,GET_VALUE+2
- MOVE.L D2,PARSE_GET_KOMMA+2
- MOVE.L D3,SND2BUN+2
- MOVE.L D4,SND1BUN+2
- MOVE.L D5,SND1B+2
- MOVE.L D6,SND1BS+2
- MOVE.L D7,SND1WS+2
- MOVE.L A0,SND1WUN+2
- MOVE.L A1,SND1W+2
- MOVE.L A2,SND1L+2
- MOVE.L A3,SND1LR+2
- MOVE.L A4,ASKIP+2
- MOVE.L A5,AINSERT+2
- RTS
- INITASSEMBLER2 MOVE.L D0,NSYMBOL+2
- MOVE.L D1,NSYMBOLBUFFER+2
- MOVE.L D2,NLABEL+2
- MOVE.L D3,GET_ADDR+2
- MOVE.L D4,GETLABELVAL+2
- MOVE.L D5,INCDIRBUF+2
- MOVE.L D6,PRINTTEXT+2
- MOVE.L D7,DOSBASE
- MOVE.L A0,INPUTBUF+2
- MOVE.L A1,RESERVE+2
- MOVE.L A2,PRINTLENGTH+2
- RTS
-
-
- ******* CODE FOR EXTERN ASSEMBLER ******
-
- CHK68000 MOVE.L (SP)+,(SP)
- RTS
- REP_ERROR JMP $00000000.L
- GET_VALUE JMP $00000000.L
- PARSE_GET_KOMMA JMP $00000000.L
- SND2BUN JMP $00000000.L
- SND1BUN JMP $00000000.L
- SND1B JMP $00000000.L
- SND1BS JMP $00000000.L
- SND1WS JMP $00000000.L
- SND1WUN JMP $00000000.L
- SND1W JMP $00000000.L
- SND1L JMP $00000000.L
- SND1LR JMP $00000000.L
- ASKIP JMP $00000000.L
- AINSERT JMP $00000000.L
- NLABEL JMP $00000000.L
- NSYMBOL JMP $00000000.L
- GET_ADDR JMP $00000000.L
- GETLABELVAL JMP $00000000.L
- PRINTTEXT JMP $00000000.L
- NSYMBOLBUFFER MOVE.L #$0,4(SP)
- RTS
- INCDIRBUF MOVE.L #$0,4(SP)
- RTS
- INPUTBUF MOVE.L #$0,4(SP)
- RTS
- RESERVE JMP $00000000.L
- PRINTLENGTH JMP $00000000.L
- DOSBASE DS.L 1
- ENDM
-